// 引入路由和storage工具函数
import storage from "@/utils/storage.js";
import router from "@/router/index.js";
import { MessageBox } from "element-ui";
import axios from "axios";

let lastTime = new Date().getTime(); //当前时间
let currentTime = new Date().getTime(); //用户最后点击的时间
let timeOut = 30 * 60 * 1000; //设置超时时间: 30分钟
// console.log(router);

window.onload = function() {
  window.document.onmousedown = function() {
    //监听鼠标事件
    storage.setItem("lastTime", new Date().getTime()); //用户一点击马上更新localStroage存储的时间
    // console.log(storage.getItem("lastTime"));
  };
};

//清除cookie
function clearCookie() {
  var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
  if (keys) {
    for (var i = keys.length; i--; ) {
      document.cookie =
        keys[i] + "=0;path=/;expires=" + new Date(0).toUTCString(); //清除当前域名下的,例如：m.kevis.com
      document.cookie =
        keys[i] +
        "=0;path=/;domain=" +
        document.domain +
        ";expires=" +
        new Date(0).toUTCString(); //清除当前域名下的，例如 .m.kevis.com
      document.cookie =
        keys[i] +
        "=0;path=/;domain=kevis.com;expires=" +
        new Date(0).toUTCString(); //清除一级域名下的或指定的，例如 .kevis.com
    }
  }
}
//发起退出请求
function exit() {
  axios
    .get("/v1/users/logout")
    .then((result) => {
      console.log(result);
    })
    .catch((err) => {
      console.log(err);
    });
}

function checkTimeout() {
  currentTime = new Date().getTime(); //更新当前时间
  lastTime = storage.getItem("lastTime");

  if (currentTime - lastTime > timeOut) {
    //判断是否超时

    // 清除storage的数据(登陆信息和token)
    storage.clear();
    // 跳到登陆页
    if (router.currentRoute.name == "login") {
      return; // 当前已经是登陆页时不做跳转
    } else {
      clearCookie();
      exit();
      router.push({ name: "login" });
      MessageBox("由于您长时间未操作，登陆已失效", "提示", {
        confirmButtonText: "确定",
        type: "success",
      });
    }
  }
}

export default function() {
  /* 定时器 间隔30秒检测是否长时间未操作页面 */
  window.setInterval(checkTimeout, 30000);
}
